خواندن اطلاعات از اکسل و ذخیره اطلاعات آن در جدول دیتابیس
سلام
من یه فایل اکسل دارم که توش یه چند تا اسم و ایمیل هست
می خوام با خوندن این فایل هم اطلاعاتش تو جدول ریخته بشه هم به این افراد ایمیل ارسال بشه
ممکنه راهنماییم کنید
مرسی
اپه از سی شار استفاده میکنید.چند تا گزینه دارید .
1.از Excel object Library استفاده کنید.(روی refrence تو پروژتون راست کلیک کنید.تب Com رو انتخاب کنید و Microsoft Excel Object Library رو انتخاب کنید).بعدش میتونید بعد از using کردنش بصورت زیر ازش استفاده کنید.
مشکلش اینه که باید قبلش آفیس نصب باشه . اگه نباشه باید رفرنسهای مورد نیازت رو دانلود کنی و کنار فایل اجرایی برنامتون بزارید .(میتونید از اینجا دانلود کنید : http://support.micro...com/kb/897646�� )
2.میتونید از Oledb استفاده کنید. و انگار که دارید با تیبل کار میکنید ازش استفاده کنید و دادهاتون رو بخونید.:
مثال:
using System.Data;
using System.Data.OleDb;
//فرض کردم مسیر فایل اکسلتون توی سی هست.
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Book1.xls;Extended Properties=Excel 8.0");
OleDbDataAdapter da = new OleDbDataAdapter("select * from MyObject", con);
DataTable dt = new DataTable();
da.Fill(dt);
مثال دوم:
var fileName = @"C:\ExcelFile.xlsx";
var connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\""; ;
using (var conn = new OleDbConnection(connectionString))
{
conn.Open();
var sheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
using (var cmd = conn.CreateCommand())
{
cmd.CommandText = "SELECT * FROM [" + sheets.Rows[0]["TABLE_NAME"].ToString() + "] ";
var adapter = new OleDbDataAdapter(cmd);
var ds = new DataSet();
adapter.Fill(ds);
}
}
مثال سوم :
DataSet ds_Data = new DataSet();
OleDbConnection oleCon = new OleDbConnection();
string strExcelFile = @"C:\Test.xlsx";
oleCon.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + strExcelFile + ";Extended Properties=\"Excel 12.0;IMEX=1;HDR=NO;TypeGuessRows=0;ImportMixedTypes=Text\"";;
string SpreadSheetName = "";
OleDbDataAdapter Adapter = new OleDbDataAdapter();
OleDbConnection conn = new OleDbConnection(sConnectionString);
string strQuery;
conn.Open();
int workSheetNumber = 0;
DataTable ExcelSheets = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
SpreadSheetName = ExcelSheets.Rows[workSheetNumber]["TABLE_NAME"].ToString();
strQuery = "select * from [" + SpreadSheetName + "] ";
OleDbCommand cmd = new OleDbCommand(strQuery, conn);
Adapter.SelectCommand = cmd;
DataSet dsExcel = new DataSet();
Adapter.Fill(dsExcel);
conn.Close();
راه حل سوم و بهترین راه حل : استفاده از کاموننت ExcelDataReader هست.: Excel Data Reader - Read Excel files in .NET
خیلی راحت Dllهاشو دانلود کنید و تو روژتون ازش استفاده کنید.
نحوه استفاده اش هم در سی شار بصورت زیره :
FileStream stream = File.Open(filePath, FileMode.Open, FileAccess.Read);
//1. برای خوندن فایل اکسل آفیس 97 تا آفیس 2003 با پسوند..xls
IExcelDataReader excelReader = ExcelReaderFactory.CreateBinaryReader(stream);
//...
//2. برای خوندن فایل اکسل آفیس 2007 به بالا.با پسوند .xlsx
IExcelDataReader excelReader = ExcelReaderFactory.CreateOpenXmlReader(stream);
//...
//3. نتیجه هر صفحه گسترده درون result.Tables قرار میگیره.
DataSet result = excelReader.AsDataSet();
//...
//4. ایجاد نام ستونها بر اساس سطر اول
excelReader.IsFirstRowAsColumnNames = true;
DataSet result = excelReader.AsDataSet();
//5. برای کار کردن و خوندن
while (excelReader.Read())
{
//excelReader.GetInt32(0);
}
//6. آزاد سازی منابع بعد از انجام کارها
excelReader.Close();
برای ارسال ایمیل هم میتونید از کلاس System.Net.Mail استفاده کنید.
مثال:
using System.Net.Mail;
using System.Net;
var fromAddress = new MailAddress("from@gmail.com", "From Name");
var toAddress = new MailAddress("to@[B][URL="http://forum.ustmb.ir/member.php?u=843"]yahoo[/URL][/B] .com", "To Name");
const string fromPassword = "password";
const string subject = "test";
const string body = "Hey now!!";
var smtp = new SmtpClient
{
Host = "smtp.gmail.com",
Port = 587,
EnableSsl = true,
DeliveryMethod = SmtpDeliveryMethod.Network,
Credentials = new NetworkCredential(fromAddress.Address, fromPassword),
Timeout = 20000
};
using (var message = new MailMessage(fromAddress, toAddress)
{
Subject = subject,
Body = body
})
{
smtp.Send(message);
}
علاقه مندی ها (Bookmarks)